查看原文
其他

是时候放弃手写爬虫了,又一个被低估的Chrome爬虫插件...

忆蓉之心 Java面试那些事儿 2020-10-08

这是之前的一篇原创旧文,没想到同步到知乎上面后,效果还不错,点赞快破千了,决定再重新发一下,希望对各位同学有所帮助。

知乎链接:https://zhuanlan.zhihu.com/p/97896148


------


最近,有同学问我。


我不想写代码,如何快速爬取几个数据量不太大的网页?


这个需求,估计大家很多时候都会遇到,比如,你想爬取秒杀页面的商品信息进行对比;你想爬取国家统计局官网发布的你感兴趣的数据;等等。


既然说到这里,我就简单的介绍一下网络爬虫。网络爬虫的主要目的是爬取互联网上的网页。你可以把互联网中的每一个网页想象成一个点,那么整个互联网将是彼此连通的。是不是很像我们大学学过的图论?如果从任何一个网页出发,在时间资源允许的情况下,使用广度优先算法(BFS)或者深度优先算法(DFS)是可以爬完整个互联网的。对这两种算法不太熟悉的同学可以去背书了。


下面以比较流行的 Scrapy 架构图为例,流线为数据流向。



看了这幅图,是不是对一般的爬虫有了大致的了解了。


专业的网络爬虫(比如百度/谷歌的爬虫)为了节约资源和时间,因此,设计是相当复杂的。这些爬虫一般是基于分布式集群构建的,有些机子负责调度,有些机子负责下载,有些机子专门基于网页进行分析,等等。并非简单的用 BFS/DFS 就能解决的,比如,我们以调度器为例,它就需要来管理下载优先级,当引擎发送过来 Request 请求,就需要按照优先级进行整理排列,入队,当引擎需要时,交还给引擎。


虽然关于各种语言的爬虫框架很多,要是用这些框架来爬这点数据,确实有点大材小用了,而且还得要编码调试,各种麻烦!!!


我发现 Chrome 商店里面有一款爬虫插件,刚好解决这个痛点,它的名字叫做 Web Scraper,目前有 22w 的用户下载。



官方网址:https://www.webscraper.io


这个爬虫操作特别简单,照着官方文档,几分钟就学会了。


我这里就说几个关键点吧。


1、启动


一般初次使用,不知道怎么打开它,用快捷键 ctrl+shift+i 打开开发者工具。



sitemaps:你所有的爬虫。


create new sitemap:创建一个新爬虫的起始地址。


2、选择器



对于一个选择器而言,就有如下几种元素,它主要作用是为爬虫分析网页的功能,提供了可视化选择的功能,如下图所示。



好了,再来细说一下,选择器内部的几个元素。


Id: 选择器的ID;


Type:要抓取内容的类型,有文本、图片以及元素集等;


Selector:选择器。点击 select 按钮可以选择我们要抓取的内容,点击 element preview 按钮可以预览选择的内容,而点击 data preview 按钮可以预览抓取的数据;


Multiple:勾选了这个按钮可以并联相同的内容;


Regex:正则表达式;


Delay:延迟。为了让页面有足够的时间加载数据;


Parent Selectors:父选择器。


有的同学可能会问,如果我要在一个页面选择多个元素,该怎么办呢?上面的提到的 Type 属性里面的 Element 就起到这个作用,如我这里。



3、关系图


我觉得这个功能特别棒,帮我们看到这个爬虫的层级关系图。



最后,就是爬取数据了,爬取后的数据还可以导出为 excel,便于你分析。



大家可以去玩一下这个爬虫插件,会帮你快速分析一些简单的数据。


就写到这里吧。


如果这篇文章对你有帮助,记得点赞或者转发一下。


------


好久没有给大家发福利了,今天,决定从本文的留言中选取5位同学,每人赠送图书一本。本次图书由博文视点学院赞助。


在这里,必须安利一波他们今晚上的免费直播课,主题是关于技术栈和技术面试的,感兴趣的同学可以扫下方二维码去听听。



热文推荐
2020年2月编程语言排行榜
王垠的这道Java高级面试题,看似容易,其实很难!
面试题:你平时是如何解决缓存穿透,缓存击穿,缓存雪崩的?

点我,查看更多精彩文章。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存